﻿Public Class IsverenSanalYatirim : Inherits Process

	Dim d1, d2, bordro As Input

	Public Overrides Sub GenericEvent(ByVal e As ProcessEventArgs)
		Select Case e.EventType
			Case EventType.Initialize
				Start("İşveren sanal yatırım", "İşveren bilgisini girin.")
				AddSigortali()
				StartBody()
				d1 = AddDate("tarih1", "Baş.tar.")
				d2 = AddDate("tarih2", "Bit.tar.")
				bordro = AddCombo("bordro", "Bordro tipi", "D|D1|D2")
			Case EventType.ValidateForm
				Dim Rs = Hukuk.Af.SanalYatirimOku(Local, Input("Sigortali"))
				If Not Rs.EOF Then
					If Confirm("Bu sigortalı için yapılmış sanal yatırımlar var. Bunların silinmesini istiyor musunuz?") Then
						Hukuk.Af.SanalYatirimSil(Local, Input("Sigortali"))
						Info("Sigortalının kayıtlı sanal yatırımları silinmiştir.")
					End If
				End If
				Buttons.Show("Save.Reset")
				e.Result = True
			Case EventType.Save
				If Check("tarih1", d1.IsEmpty, "Başlangıç tarihini girmelisiniz.") Then Return
				If Check("tarih2", d2.IsEmpty, "Bitiş tarihini girmelisiniz.") Then Return
				If Check("bordro", bordro.IsEmpty, "Bordro seçimi yapmalısınız.") Then Return
				If Check("tarih1", d1.Get > d2.Get, "Bitiş tarihi başlangıç tarihinden sonra olmalıdır.") Then Return
				Dim d As Date = d1.Get
				Dim ld As Date = d2.Get
				Dim List As New SortedList(Of Date, Integer)
				Do
					If d >= ld Then Exit Do
					Dim dc As Integer = 30
					If ld.AddDays(1).Month <> d.Month Then
						If d.Day <> 1 Then dc = d.AddMonths(1).AddDays(-d.Day).Day - d.Day
					Else
						dc = ld.Day - d.Day + 1
					End If
					List.Add(d.AddDays(-d.Day + 1), dc)
					d = d.AddMonths(1).AddDays(-d.Day + 1)
				Loop
				Dim t As String = ""
				For Each Item In List
					t &= vbCrLf & Item.Key.DMY & " - " & Item.Value & " gün"
				Next
				If Not Confirm("Bu sigortalı için aşağıdaki tarihlerde sanal yatırım yaratmak istediğinizden emin misiniz?" & vbCrLf & t) Then Return
				Hukuk.Af.SanalYatirimYaz(Local, Input("Sigortali"), bordro.Get, List)
				Info("Sigortalı için sanal yatırımlar oluşturulmuştur.")
		End Select
	End Sub

End Class
